#ifndef PROPERTY_H
#define PROPERTY_H

#include <QtGui/QApplication>
#include <QtGui/QWidget>
#include <QMetaType>
#include <string>
#include <Ogre.h>
#include <map>
#include "qtpropertymanager.h"
#include "qtvariantproperty.h"
#include "qttreepropertybrowser.h"

class BaseProperty 
{
public:
	BaseProperty(){mType="null_type";}
	BaseProperty(std::string type){mType=type;}
	std::string mType;
	QtProperty* mTopProperty;
	static QtTreePropertyBrowser* mBrowserStatic;
	static QtVariantPropertyManager* mManagerStatic;
};
Q_DECLARE_METATYPE(BaseProperty*);

class SceneManagerProperty:public BaseProperty
{
public:
	SceneManagerProperty();
	SceneManagerProperty(std::string type);
	void updateProperty();
	Ogre::SceneManager* mSceMgr;	

protected:
	virtual void _initProperty();
	//attribute
};
Q_DECLARE_METATYPE(SceneManagerProperty*);

class ViewPortProperty:public BaseProperty
{
public:
	ViewPortProperty();
	ViewPortProperty(std::string type);
	void updateProperty();
protected:
	virtual void _initProperty();
};
Q_DECLARE_METATYPE(ViewPortProperty*);

#endif